저는 OAuth를 처음 사용하고 Twitter API를 가지고 놀았습니다. 에 요청하여 인증 후 사용자의 자격 증명을 가져올 수 http://api.twitter.com/1/account/verify_credentials.xml
있습니다. 응답에는 사용자 ID, 화면 이름 등이 포함되지만 이메일 ID는 포함되지 않습니다.
사용자의 이메일 ID를 검색 할 수 있습니까?
최신 정보
특별히 확장 된 권한을 요청하면 Facebook이이 정보를 제공한다고 생각합니다 . 트위터에도 비슷한 것이 있습니까?
답변
사용자의 이메일 주소는 API를 통해 검색 할 수 없습니다. 이것은 API 팀의 의도적 인 설계 결정입니다.
업데이트 2015.08.18 :
사용자에게 이메일 주소를 요청할 수 있지만 앱이 허용 목록에 있어야합니다. API 호출에 대한 자세한 내용은 https://dev.twitter.com/rest/reference/get/account/verify_credentials 를 참조하고 앱의 허용 목록을 요청하려면 이 양식 을 참조 하세요 .
답변
들어 OutsourceFactor 파이썬 / 장고로 작성된 것입니다, 내가 oAuth1를 통해 사용자 이름을 얻을, 다음 “username@twitter.com”트위터에서 고유 보장되는으로 이메일을 구축합니다. 그런 다음 멋진 UUID를 사용하고 로컬 사용자 계정과 연결하기 위해 해시합니다. Yahoo도 마찬가지입니다. Google과 Facebook은 oAuth2를 사용하며 요청시 이메일 주소를 제공합니다.
단일 계정으로 여러 소셜 연결을 보장하기 위해 사용자가 로컬에서 계정을 만들고 로그인 한 후에 만 소셜 계정 연결을 허용합니다.
따라서 먼저 계정 (로컬 계정)을 생성 한 다음 소셜 oAuth 공급자를 사용하여 향후 로그인을 용이하게 할 수 있습니다. 이것은 내 사이트에 대한 최고의 가격입니다.
어쨌든 트위터에서 고유 한 형태의 ID를 얻습니다. 그러니 그냥 사용하세요. 나중에 또는 연결 전에 이메일 주소를 요청할 수 있습니다.
답변
트위터는 OAuth 응답에서 이메일 주소를 난독 화합니다. “Twitter로 등록”기능을 포함하려는 사람들에게 항상 큰 문제였습니다.
더 최근 (2015 년 초), 트위터는 두 번째 서비스 콜을 통해 이메일 주소 지원을 추가했지만 특정 상황에서 악용되었습니다.
https://dev.twitter.com/rest/reference/get/account/verify_credentials
이제 가능하지만 내 의견은 OAuth 모든 공급자이지만 트위터 단일 사인온을 계속 구현하는 것입니다. 그들은 정상적으로 행동 할 때까지 보이콧되어야합니다. 즉, 다른 모든 OAuth 공급자와 마찬가지로 말입니다.
답변
Fabric을 사용하는 Android에서 다음과 같이 사용자의 이메일 주소를 요청합니다.
TwitterAuthClient authClient = new TwitterAuthClient();
authClient.requestEmail(session, new Callback<String>() {
@Override
public void success(Result<String> result) {
// Do something with the result, which provides the email address
}
@Override
public void failure(TwitterException exception) {
// Do something on failure
}
});
참조 http://docs.fabric.io/android/twitter/request-user-email-address.html를
답변
제 경우에는 응답을받을 때마다 모든 사용자에 대해 고유 한 인증 ID를 받았으며 매번 해당 사용자에 대해 동일합니다. 그래서 나는 그 ID를 사용하여 unique_id@twitter.com과 같은 이메일을 만들고 그것이 이미 내 사이트에 있는지 (처음에는 그렇지 않은지) 확인한 다음 사용자를 등록했습니다. 그런 다음 두 번째로 로그인하면 이메일을 다시 만들고 이미 거기에 있는지 확인합니다. 이것으로 나는 그가 먼저 로컬 계정을 만들도록 할 필요가 없으며 로그인하기 위해 그를 식별 할 수 있습니다.
답변
방법은 다음과 같습니다 Laravel에서 트위터 사용자 이메일을 얻을 수있는 예이며,에하는 coditty.com 당신은 각도 + Laravel를 사용하여 전체 예제를 찾을 수 있습니다
// get token secret from db
$token = TwitterTokens::where('oauth_token', $request->input('oauth_token'))->first();
// open twitter connection
$connection = new \Abraham\TwitterOAuth\TwitterOAuth(
$this->twitter_consumer_key,
$this->twitter_secret,
$request->input('oauth_token'),
$token->oauth_token_secret// twitter secret from DB
);
// get acces token
$access_token = $connection->oauth("oauth/access_token", ["oauth_verifier" => $request->input('oauth_verifier')]);
// new TwitterOAuth instance to get email
$twitterOAuth = new \Abraham\TwitterOAuth\TwitterOAuth( $this->twitter_consumer_key, $this->twitter_secret, $access_token['oauth_token'], $access_token['oauth_token_secret'] );
// Let's get the user's info with email
$twitterUser = $twitterOAuth->get('account/verify_credentials', ['include_entities' => 'false','include_email'=>'true','skip_status'=>'true',]);
// output user object from twitter in your Log file
Log::info(['user'=>$twitterUser]);