FB登录Android [英] FB login Android

查看:149
本文介绍了FB登录Android的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在执行以下操作之后,调用OnCancel方法:

 < activity 
android:name =
android:theme =@ style / FullscreenTheme>
android:configChanges =orientation | keyboardHidden | screenSize
android:label =@ string / title_activity_fb_login
< / activity>

< meta-data
android:name =com.facebook.sdk.ApplicationId
android:value =xxxxxxxxxxxxxx/>
< provider android:authority =com.facebook.app.FacebookContentProvider456579934439214
android:name =com.facebook.FacebookContentProvider
android:exported =true/>


< activity android:name =com.facebook.FacebookActivity
android:configChanges =
keyboard | keyboardHidden | screenLayout | screenSize | orientation
android:theme =@ android:style / Theme.Translucent.NoTitleBar
android:label =@ string / app_name/>

在活动中:

  public class FbLoginActivity extends Activity {

TextView tvTermsLink;
CallbackManager callbackManager;
String TAG =FbLoginActivity;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow()。setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();

setContentView(R.layout.activity_fb_login);
LoginButton loginButton =(LoginButton)findViewById(R.id.authButton);

loginButton.setReadPermissions(Arrays.asList(user_location,email,user_friends,user_birthday,user_likes,user_work_history,user_relationships,user_relationship_details,
user_education_history));


tvTermsLink =(TextView)findViewById(R.id.fbl_tv_termsLink);
tvTermsLink.setText(Html.fromHtml(通过登录您接受< a href = \http://crownit.in/terms\>条款< / a> ));

tvTermsLink.setMovementMethod(LinkMovementMethod.getInstance());




loginButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){

LoginManager.getInstance()。registerCallback(callbackManager,new FacebookCallback< LoginResult>(){
@Override
public void onSuccess(LoginResult loginResult){

}

@Override
public void onCancel(){

}

@Override
public void onError(FacebookException e){

}
});


}
});

}

@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data){
super.onActivityResult(requestCode,resultCode,data );
callbackManager.onActivityResult(requestCode,resultCode,data);
}

在长时间引用在线资源后,我无法了解错误的内容代码。任何帮助将不胜感激。

解决方案

如果您使用的是Facebook的默认登录按钮,而不需要设置onclick事件。你可以这样使用它。



  loginButton =(LoginButton)findViewById .id.login_button); List<字符串> permissionNeeds = Arrays.asList(user_photos,email,user_birthday,public_profile,AccessToken); loginButton.registerCallback(callbackManager,new FacebookCallback< LoginResult>(){@Override public void onSuccess loginResult){System.out.println(onSuccess); String accessToken = loginResult.getAccessToken().getToken(); Log.i(accessToken,accessToken); GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken ,新的GraphRequest.GraphJSONObjectCallback(){@Override public void onCompleted(JSONObject object,GraphResponse response){Log.i(LoginActivity,response.toString()); try {id = object.getString(id); try {URL profile_pic = new URL(http://graph.facebook.com/+ id +/ picture?type = large); Log.i(profile_pic,profile_pic +);} catch(MalformedURLException e){e.printStackTrace();} String name = object.getString(name); String email = object.getStri NG( 电子邮件); String gender = object.getString(gender); String birthday = object.getString(birthday); } catch(JSONException e){e.printStackTrace(); }}}); Bundle参数= new Bundle(); parameters.putString(fields,id,name,email,gender,birthday); request.setParameters(参数); request.executeAsync(); } @Override public void onCancel(){System.out.println(onCancel); } @Override public void onError(FacebookException exception){System.out.println(onError); Log.v(LoginActivity,exception.getCause()。toString());如果您使用自定义的Facebook按钮,而不仅仅是检查,则可以使用{@} $我的答案在这里使用自定义按钮进行Facebook登录 


After implementing the following , OnCancel method is being called :

<activity
            android:name=".FbLoginActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:label="@string/title_activity_fb_login"
            android:theme="@style/FullscreenTheme" >
        </activity>

        <meta-data
            android:name="com.facebook.sdk.ApplicationId"
            android:value="xxxxxxxxxxxxxx"/>
        <provider android:authorities="com.facebook.app.FacebookContentProvider456579934439214"
            android:name="com.facebook.FacebookContentProvider"
            android:exported="true" />


        <activity android:name="com.facebook.FacebookActivity"
            android:configChanges=
                "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:label="@string/app_name" />

In the Activity:

public class FbLoginActivity extends Activity {

    TextView tvTermsLink;
    CallbackManager callbackManager;
    String TAG="FbLoginActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        FacebookSdk.sdkInitialize(getApplicationContext());
        callbackManager = CallbackManager.Factory.create();

        setContentView(R.layout.activity_fb_login);
        LoginButton loginButton = (LoginButton) findViewById(R.id.authButton);

        loginButton.setReadPermissions(Arrays.asList("user_location", "email", "user_friends", "user_birthday", "user_likes", "user_work_history", "user_relationships", "user_relationship_details",
                "user_education_history"));


        tvTermsLink=(TextView) findViewById(R.id.fbl_tv_termsLink);
        tvTermsLink.setText(Html.fromHtml("By logging in you accept the <a href=\"http://crownit.in/terms\">Terms & Conditions</a> "));

        tvTermsLink.setMovementMethod(LinkMovementMethod.getInstance());




        loginButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

              LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {

                }

                @Override
                public void onCancel() {

                }

                @Override
                public void onError(FacebookException e) {

                }
            });


            }
        });

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        callbackManager.onActivityResult(requestCode, resultCode, data);
    }

After prolonged referring the online resources, I am not able to understand whats wrong in the code. Any help will be appreciated.

解决方案

If you are using facebook's default login button than no need to set onclick event. you can use it like this.

loginButton = (LoginButton) findViewById(R.id.login_button);

List < String > permissionNeeds = Arrays.asList("user_photos", "email",
	"user_birthday", "public_profile", "AccessToken");
loginButton.registerCallback(callbackManager,
new FacebookCallback < LoginResult > () {@Override
	public void onSuccess(LoginResult loginResult) {

		System.out.println("onSuccess");

		String accessToken = loginResult.getAccessToken()
			.getToken();
		Log.i("accessToken", accessToken);

		GraphRequest request = GraphRequest.newMeRequest(
		loginResult.getAccessToken(),
		new GraphRequest.GraphJSONObjectCallback() {@Override
			public void onCompleted(JSONObject object,
			GraphResponse response) {
				Log.i("LoginActivity", response.toString());
				try {
					id = object.getString("id");
					try {
						URL profile_pic = new URL(
							"http://graph.facebook.com/" + id + "/picture?type=large");
						Log.i("profile_pic",
						profile_pic + "");

					} catch (MalformedURLException e) {
						e.printStackTrace();
					}
					String name = object.getString("name");
					String email = object.getString("email");
					String gender = object.getString("gender");
					String birthday = object.getString("birthday");
				} catch (JSONException e) {
					e.printStackTrace();
				}
			}
		});
		Bundle parameters = new Bundle();
		parameters.putString("fields",
			"id,name,email,gender, birthday");
		request.setParameters(parameters);
		request.executeAsync();
	}

	@Override
	public void onCancel() {
		System.out.println("onCancel");
	}

	@Override
	public void onError(FacebookException exception) {
		System.out.println("onError");
		Log.v("LoginActivity", exception.getCause().toString());
	}
});

if you using customized facebook button than just check my answer here facebook login with customized button

这篇关于FB登录Android的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆