Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在Android登录后获取facebook电子邮件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我的代码实现连接.
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.MalformedURLException;

import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.widget.ProgressBar;
import android.widget.TextView;

import com.facebook.android.AsyncFacebookRunner;
import com.facebook.android.AsyncFacebookRunner.RequestListener;
import com.facebook.android.DialogError;
import com.facebook.android.Facebook;
import com.facebook.android.Facebook.DialogListener;
import com.facebook.android.FacebookError;
import com.facebook.android.Util;

public class FacebookConnect extends Activity{

    public static final String TAG = "FACEBOOK";
    private Facebook mFacebook;
    public static final String APP_ID = "XXX";
    private AsyncFacebookRunner mAsyncRunner;
    private static final String[] PERMS = new String[] { "read_stream" };
        private SharedPreferences sharedPrefs;
        private Context mContext; 

        private TextView username;
        private ProgressBar pb;
        String fbId,fbName,fbEmail;

        public void setConnection() {
                mContext = this;
                mFacebook = new Facebook(APP_ID);
                mAsyncRunner = new AsyncFacebookRunner(mFacebook);
        }

        public void getID(TextView txtUserName,ProgressBar progbar) {
                username = txtUserName;
                pb = progbar;
                if (isSession()) {
                        Log.d(TAG,"sessionValid");
                        mAsyncRunner.request("me",new IDRequestListener());
                } else {
                    // no logged in,so relogin
                    Log.d(TAG,"sessionNOTValid,relogin");
                        mFacebook.authorize(this,PERMS,new LoginDialogListener());
                }
        }

        public boolean isSession() {
                sharedPrefs = PreferenceManager.getDefaultSharedPreferences(mContext);
                String access_token = sharedPrefs.getString("access_token","x");
            Long expires = sharedPrefs.getLong("access_expires",-1);
                Log.d(TAG,access_token);

                if (access_token != null && expires != -1) {
                        mFacebook.setAccessToken(access_token);
                        mFacebook.setAccessExpires(expires);
                }
                return mFacebook.isSessionValid();
        }

        private class LoginDialogListener implements DialogListener {

                @Override
                public void onComplete(Bundle values) {
                        Log.d(TAG,"LoginONComplete");
                    String token = mFacebook.getAccessToken();
                    long token_expires = mFacebook.getAccessExpires();
                    Log.d(TAG,"AccessToken: " + token);
                    Log.d(TAG,"AccessExpires: " + token_expires);
                    sharedPrefs = PreferenceManager
                                    .getDefaultSharedPreferences(mContext);
                    sharedPrefs.edit().putLong("access_expires",token_expires).commit();
                    sharedPrefs.edit().putString("access_token",token).commit();
                    mAsyncRunner.request("me",new IDRequestListener());
                }

                @Override
                public void onFacebookError(FacebookError e) {
                        Log.d(TAG,"FacebookError: " + e.getMessage());
                }

                @Override
                public void onError(DialogError e) {
                        Log.d(TAG,"Error: " + e.getMessage());
                }

                @Override
                public void onCancel() {
                        Log.d(TAG,"OnCancel");
                }
        }

        private class IDRequestListener implements RequestListener {

                @Override
                public void onComplete(String response,Object state) {
                        try {
                                Log.d(TAG,"IDRequestONComplete");
                            Log.d(TAG,"Response: " + response.toString());
                                JSONObject json = Util.parseJson(response);
                                fbId = json.getString("id");
                                fbName = json.getString("name");
                                //fbEmail = json.getString("email");

                                FacebookConnect.this.runOnUiThread(new Runnable() {
                                    public void run() {
                                    username.setText("Welcome: " + name + "\n ID: " + fbId);
                                pb.setVisibility(ProgressBar.GONE);
                                    }
                            });
                        } catch (JSONException e) {
                                Log.d(TAG,"JSONException: " + e.getMessage());
                    } catch (FacebookError e) {
                            Log.d(TAG,"FacebookError: " + e.getMessage());
                        }
                }

                @Override
                public void onIOException(IOException e,Object state) {
                        Log.d(TAG,"IOException: " + e.getMessage());
                }

                @Override
                public void onFileNotFoundException(FileNotFoundException e,"FileNotFoundException: " + e.getMessage());
                }

                @Override
                public void onMalformedURLException(MalformedURLException e,"MalformedURLException: " + e.getMessage());
                }

                @Override
                public void onFacebookError(FacebookError e,"FacebookError: " + e.getMessage());
                }

        }

        @Override
        protected void onActivityResult(int requestCode,int resultCode,Intent data) {
                mFacebook.authorizeCallback(requestCode,resultCode,data);
        }
}@H_502_3@ 
 

作为回应我得到一个JSON.例:

08-15 14:22:42.160: DEBUG/FACEBOOK(1258): Response: {"id":"3159628280","name":"Peter Black","first_name":"Peter","last_name":"Black","link":"http:\/\/www.facebook.com\/Peter.Black","username":"Peter.Black","gender":"male","timezone":3,"locale":"bg_BG","verified":true,"updated_time":"2011-08-14T08:42:59+0000"}@H_502_3@ 
 

我的问题是如何获取用户的电子邮件(他登录到Facebook的电子邮件)?

解决方法

您需要电子邮件权限才能阅读用户电子邮件地址.
这将在您的json响应中添加一个电子邮件标签[uid]或我的请求.

电子邮件

资料来源:Permissions

大佬总结

以上是大佬教程为你收集整理的在Android登录后获取facebook电子邮件全部内容,希望文章能够帮你解决在Android登录后获取facebook电子邮件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: