9 android facebook parse-platform android-studio
我的代码是.
private void facebook() {
List<String> permissions = Arrays.asList("public_profile", "email");
ParseFacebookUtils.logInWithReadPermissionsInBackground(this, permissions, new LogInCallback() {
@Override
public void done(ParseUser user, ParseException err) {
progressDialog.dismiss();
Log.e("Facebook", user + " " + err.getMessage());
if (user == null) {
Log.e("MyApp", "Uh oh. The user cancelled the Facebook login.");
} else if (user.isNew()) {
Log.e("MyApp", "User signed up and logged in through Facebook!");
} else {
userinfo(user);
Log.e("MyApp", "User logged in through Facebook!");
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
这段代码总是提供用户为空..我用的Facebook SDK是最新的
compile 'com.facebook.android:facebook-android-sdk:4.0.1'
并Parse是: Parse-1.9.1.jar
我有使用Android Studio.这个方法是单击按钮时调用此方法是工作意味着facebook弹出窗口是打开但它总是提供用户为空.给定的是user为null但刷新后parseuser不为null.
根据Parse 文档和我在网上找到的一些提示,这些是我用ParseUsers进行用户注册/登录/链接的步骤.请检查您是否没有错过任何步骤,因为我遇到了同样的问题,我不得不重新执行所有步骤:
发展重点:
cd C:\ Program Files\Java\jdk1.8.0_05\bin keytool -exportcert -alias androiddebugkey -keystore C:\ Users \'YOUR NAME'.android\debug.keystore | C:\ OpenSSL\bin\openssl sha1 -binary | C:\ OpenSSL\bin\openssl base64
发布密钥:
cd C:\ Program Files\Java\jdk1.8.0_05\bin keytool -exportcert -alias'NAME YOU GAAD as ALIAS'-keystore | C:\ OpenSSL\bin\openssl sha1 -binary | C:\ OpenSSL\bin\openssl base64
libs我的项目的文件夹,并syncronized的的build.gradle文件.strings.xml:<string name="facebook_app_id">1421******</string>我在我的AndroidManifest.xml内部Application标签中添加了这个:
<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" />
Run Code Online (Sandbox Code Playgroud)
还有这个:
<meta-data android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id"/>
Run Code Online (Sandbox Code Playgroud)
在build.gradle应用程序中我添加了这些内部的android因为一些错误Diamond(对不起,我不记得确切的错误):
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
Run Code Online (Sandbox Code Playgroud)
由于未定义变量的一些错误,我将SDK版本更改为数字:
minSdkVersion 14
targetSdkVersion 19
Run Code Online (Sandbox Code Playgroud)
dependencies相同文件内的相关内容:
compile fileTree(include: 'Parse-*.jar', dir: 'libs')
compile fileTree(include: 'ParseFacebookUtilsV4-*.jar', dir: 'libs')
compile 'com.facebook.android:facebook-android-sdk:4.0.0'
Run Code Online (Sandbox Code Playgroud)
在我想用facebook做所有这些事情的活动中,我做了以下事情:
Parse.initialize(this, "hoMaK", "wWV193mE");
FacebookSdk.sdkInitialize(getApplicationContext());
ParseFacebookUtils.initialize(getApplicationContext());
final List<String> permissions = Arrays.asList("public_profile", "email");
fb.setOnClickListener(new View.OnClickListener()
{
public void onClick(View view)
{
proDialog.show();
ParseFacebookUtils.logInWithReadPermissionsInBackground(HomeActivity.this, permissions, new LogInCallback() {
@Override
public void done(final ParseUser user, ParseException err) {
if (user == null) {
Log.d("MyApp", "Uh oh. The user cancelled the Facebook login.");
Toast.makeText(getApplicationContext(), "Log-out from Facebook and try again please!", Toast.LENGTH_SHORT).show();
ParseUser.logOut();
proDialog.hide();
}
else if (user.isNew()) {
Log.d("MyApp", "User signed up and logged in through Facebook!");
if (!ParseFacebookUtils.isLinked(user)) {
ParseFacebookUtils.linkWithReadPermissionsInBackground(user, HomeActivity.this, permissions, new SaveCallback() {
@Override
public void done(ParseException ex) {
if (ParseFacebookUtils.isLinked(user)) {
Log.d("MyApp", "Woohoo, user logged in with Facebook!");
proDialog.hide();
}
}
});
}
else{
Toast.makeText(getApplicationContext(), "You can change your personal data in Settings tab!", Toast.LENGTH_SHORT).show();
}
} else {
Log.d("MyApp", "User logged in through Facebook!");
if (!ParseFacebookUtils.isLinked(user)) {
ParseFacebookUtils.linkWithReadPermissionsInBackground(user, HomeActivity.this, permissions, new SaveCallback() {
@Override
public void done(ParseException ex) {
if (ParseFacebookUtils.isLinked(user)) {
Log.d("MyApp", "Woohoo, user logged in with Facebook!");
proDialog.hide();
}
}
});
}
else{
proDialog.hide();
}
}
}
});
}
});
Run Code Online (Sandbox Code Playgroud)通过以上所有步骤,我可以使用我的Facebook帐户注册或登录,我_User在Parse.com中获得一个新的对象,我可以随时更改数据(我将其作为正常符号处理 -用户)
不确定,但请检查https://developers.facebook.com上您的应用程序的密钥哈希设置。您需要在应用程序开发人员控制台中设置发布版本和调试版本的密钥哈希值。您可能刚刚为调试环境设置了密钥哈希。有关更多信息,请参阅设置发布密钥哈希。希望能帮助到你。
ParseFacebookUtils.logInWithReadPermissionsInBackground(this, Arrays.asList("email", "user_photos", "public_profile", "user_friends")
, new LogInCallback() {
@Override
public void done(ParseUser user, ParseException err) {
if (user == null) {
Toast.makeText(Form.this,"User Already logged up through Twitter!",Toast.LENGTH_LONG).show();
} else if (user.isNew()) {
} else {
Toast.makeText(Form.this,"User Already logged up through Facebook!",Toast.LENGTH_LONG).show();
}
}
});
Run Code Online (Sandbox Code Playgroud)
还加上这个..
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
ParseFacebookUtils.onActivityResult(requestCode, resultCode, data);
}
Run Code Online (Sandbox Code Playgroud)
这段代码运行完美..
| 归档时间: |
|
| 查看次数: |
4886 次 |
| 最近记录: |